/**
 * 
 */
package edu.byu.nlp.pipes;

import com.google.common.collect.Multimap;

import edu.byu.nlp.util.Nullable;

/**
 * A class representing a data instance which has data (e.g., email message,
 * sentence, image, or feature vector) and, optionally, a label, source, and human annotations.
 * 
 * @author robbie
 *
 * @param <L>
 * @param <S>
 * @param <D>
 */
public interface Instance<L, D> {

	@Nullable
	L getLabel();

	@Nullable
	String getSource();

	D getData();

	@Nullable
	Multimap<Long, L> getAnnotations();
}